//
//  AppDelegate.swift
//  HMWeibo007
//
//  Created by TTang on 15/6/26.
//  Copyright © 2015年 shanyu. All rights reserved.
//

import UIKit
import AFNetworking
/// 全局变量记录用户账号信息，只加载一次用户账号，后续再获取 token，就不再需要去磁盘加载
/// 执行时机，在需要的时候，才会执行，并不是程序一启动就会执行！
/// 放在 @UIApplicationMain 上面
var sharedUserAccount = UserAccount.loadAccount()

let HMSwitchRootVCNotification = "HMSwitchRootVCNotification"

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        
  
        
        // 打印归档保存的用户信息
        print(sharedUserAccount)
     
        //设置全局外观，越早越好
        setApperance()
        //设置网络
        setupNetwork()
        
        window = UIWindow(frame: UIScreen.mainScreen().bounds)
        window?.backgroundColor = UIColor.whiteColor()
        window?.rootViewController = defaultController()
        window?.makeKeyAndVisible()
       
        ///注册通知
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "switchViewController:", name: HMSwitchRootVCNotification, object: nil)
      
        return true
    }
    
    deinit{
        //移除通知
        NSNotificationCenter.defaultCenter().removeObserver(self, name: HMSwitchRootVCNotification, object: nil)
    }
    
    ///  切换控制器
    func switchViewController(n:NSNotification){
        // 判断 object 是否为 true，如果是，显示 MainViewController
        let isMainVC = n.object as! Bool
        
        window?.rootViewController = isMainVC ? MainViewController() : WelcomeViewController()
        
    }
    
    ///  判断加载的默认控制器
    private func defaultController() -> UIViewController {
        // 1. 判断用户是否登录
        if sharedUserAccount != nil {
            // 2. 如果登录，判断是否有新版本
            return isUpdate() ? NewFeatureController() : WelcomeViewController()
        
        }
    
        return MainViewController()
    }
    
    
    
   ///  是否有新版本更新
   private  func isUpdate() -> Bool{
       
       //1. 获取应用程序的当前版本
       let currentVersion = NSBundle.mainBundle().infoDictionary!["CFBundleShortVersionString"] as! String
       //let version = NSNumberFormatter().numberFromString(currentVersion)!.doubleValue
       //这种方式更简单
       let version = Double(currentVersion)!
    
       //2.从用户偏好设置中获取应用程序之前的版本
       let versionKey = "versionKey"
       let sandBoxVersion = NSUserDefaults.standardUserDefaults().doubleForKey(versionKey)
    
    
       //3.将当前版本写入用户偏好
       NSUserDefaults.standardUserDefaults().setDouble(version, forKey: "versionKey")
       // 从 Xcode 6.0 开始就不需要同步了
       // NSUserDefaults.standardUserDefaults().synchronize()

       return version > sandBoxVersion
        
    }
    
    func setupNetwork(){
        //设置网络指示器
        AFNetworkActivityIndicatorManager.sharedManager().enabled = true
        //设置网络缓存
        let urlCache = NSURLCache(memoryCapacity: 4 * 1024 * 1024, diskCapacity: 20 * 1024 * 1024, diskPath: nil)
        NSURLCache.setSharedURLCache(urlCache)
    
    }

    //设置全局外观方法
    func setApperance(){
      
        UINavigationBar.appearance().tintColor = UIColor.orangeColor()
        UITabBar.appearance().tintColor = UIColor.orangeColor()
    }
}

